package com.auxgroup.hr.front.commons.security;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;



import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;



import org.apache.commons.lang.StringUtils;

import com.auxgroup.hr.front.commons.Constant;

/**
 * @author lvliuhao
 * @version 创建时间：2018年6月11日 下午10:22:49 去除无用的参数
 */
public class ParameterRequestWrapper extends HttpServletRequestWrapper {

	private Map<String, String[]> params = new HashMap<String, String[]>();

	/**
	 * @param request
	 */
	public ParameterRequestWrapper(HttpServletRequest request) {
		super(request);
		this.params.putAll(request.getParameterMap());
		this.modifyParameter();
	}

	@Override
	public String getParameter(String name) {// 重写getParameter，代表参数从当前类中的map获取
		String[] values = params.get(name);
		if (values == null || values.length == 0) {
			return null;
		}
		return values[0];
	}

	@Override
	public String[] getParameterValues(String name) {// 同上
		return params.get(name);
	}

	/**
	 * 去除无用的参数
	 */
	public void modifyParameter() {
		Set<String> keySet = new HashSet<String>(params.keySet());
		for (String key : keySet) {
			if(Constant.NEED_REMOVE_PARAMETER_FROM_REQUEST.contains(key)){
				params.remove(key);
				continue;
			}
			if(params.get(key)==null||params.get(key).length<1){
				params.remove(key);
				continue;
			}
			if(StringUtils.isBlank(params.get(key)[0])||"null".equals(params.get(key)[0])){
				params.remove(key);
				continue;
			}
		}
	}

}
